package main

import "fmt"

var money int
//User结构体当做value值
var users = make(map[string]User)

//定义取钱的结构体,结构体里有两个属性
type ATM struct {
	bank string
	balance int
}

//存钱的方法，s 可以理解为别名
func (s *ATM) save(user User,money int)  {
	//银行的atm机子的钱
	s.balance += money
	//用户的余额
	user.balance += money
	//取map里的user的name属性
	users[user.name] = user
	fmt.Printf("存钱成功！余额为%d元\n",user.balance)
}

//取钱的方法
func (s *ATM) get(user User,money int) {
	//先和用户的
	if money > user.balance{
		fmt.Println("余额不足")
	}else if money > s.balance {
		fmt.Println("ATM余额不足")
	}else {
		s.balance -= money
		user.balance -= money
		users[user.name] = user
		fmt.Printf("取款成功，余额为%d元\n",user.balance)
	}
}

//查询余额的方法
func (s *ATM) u_balance(user User) {
	fmt.Printf("余额%d元\n",user.balance)
}

//定义用户的结构体，属性
type User struct {
	name string
	passwd string
	balance int
}

//主程序
func main()  {
	var op,name,passwd string
	var balance int

	for {
		fmt.Println("1.登录\n2.注册\n")
		fmt.Println("请输入你的选择：(按q退出)")
		fmt.Scanln(&op)
		if op == "1" {
			fmt.Println("请输入你的用户名：")
			fmt.Scanln(&name)
			fmt.Println("请输入你的密码：")
			fmt.Scanln(&passwd)
			if _, ok := users[name]; ok && passwd == users[name].passwd {
				fmt.Println("登录成功")
				s := ATM{"建行",10000}
				for {
				fmt.Println("1.存款\n2.取款\n3.查询余额\n4.退出")
				fmt.Println("请输入你的选择：")
				fmt.Scanln(&op)

					if op == "1" {
						fmt.Println("请输入你存款金额：")
						fmt.Scanln(&money)
						s.save(users[name],money)
					}else if op == "2" {
						fmt.Println("请输入你取款金额：")
						fmt.Scanln(&money)
						s.get(users[name],money)
					}else if op == "3" {
						s.u_balance(users[name])
					}else if op == "4" {
						break
					}else {
						fmt.Println("输入不合法")
					}
				}
			}
		}else if op == "2" {
			fmt.Println("请输入用户名：")
			fmt.Scanln(&name)
			fmt.Println("请输入密码：")
			fmt.Scanln(&passwd)
			fmt.Println("初始充值金额：")
			fmt.Scanln(&balance)
			//
			user := User{name,passwd,balance}
			users[name] = user
			fmt.Println(users)
		}else if op == "q" {
			break
		}else {
			fmt.Println("输入不合法！")
		}
	}
}